/**@file
 * @brief 测试实体类，用于派生
 * @author 朱项男<libxiangnan@gmail.com>
 * @date 2011/11/23
 * @version 0.0.1
 * @note 该类为抽象类
 * */

#ifndef TESTENTITY_H_
#define TESTENTITY_H_

#include <string>

using namespace std;

/**@namespace dat
 * @brief 名称空间dat声明，包含自定义数据
 * */
namespace dat {

//! @brief 实体状态，枚举类型
enum _EntityState{
	NOT_RUN = 0,	///< 测试尚未执行
	PASS,			///< 测试实体通过测试
	FAILED,			///< 测试实体存在未通过测试
	ERROR,			///< 测试实体存在错误
	UNFINISH,   	///< 存在没有执行的子测试对象
	DISABLED		///< 实体不需要测试
};
typedef _EntityState EntityState;	///< _EntityState别名

/**@class Entity entity.h entity.h
 * @brief 实体类声明，用于各级测试对象继承
 * @author 朱项男<libxiangnan@gmail.com>
 * @note 该类为抽象类
 * */
class Entity{
protected:
	std::string id;			///< 实体ID
	std::string name;		///< 实体名称
	std::string fulpath;	///< 实体全路径
	std::string author;		///< 实体作者
	EntityState state;		///< 实体状态
	std::string remarks;	///< 备注信息
public:
	//! @brief 构造函数
	Entity();

	//! @brief 虚析构函数
	virtual ~Entity() = 0;

	//! @brief id Setter
	void setId(const std::string &id);

	//! @brief id Getter
	std::string getId();

	//! @brief name Setter
	void setName(const std::string &lcEntityName);

	//! @brief name Getter
	std::string getName();

	//! @brief fulpath Setter
	void setFulpath(const std::string &fulpath);

	//! @brief fulpath Getter
	std::string getFulpath();

	//! @brief author Setter
	void setAuthor(const std::string &author);

	//! @brief author Getter
	std::string getAuthor();

	//! @brief state Setter
	void setState(EntityState state);

	//! @brief state Getter
	EntityState getState();

	//! @brief remarks Getter
	std::string getRemarks();

	//! @brief remarks Setter
	void setRemarks(const std::string &remarks);
};

} /* namespace dat */
#endif /* TESTENTITY_H_ */
